package com.platform.enums;

import com.platform.comm.constants.EnumOption;
import com.platform.comm.enums.IEnumOption;

import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;

/**
 * @author zq
 */
@EnumOption(name = "sensitiveType")
public enum SensitiveTypeEnum implements IEnumOption<String> {

    /**
     * 自定义
     */
    CUSTOMER("自定义"),

    /**
     * 中文名
     */
    CHINESE_NAME("中文名"),

    /**
     * 身份证号
     */
    ID_CARD("身份证号"),

    /**
     * 座机号
     */
    FIXED_PHONE("座机号"),

    /**
     * 手机号
     */

    MOBILE_PHONE("手机号"),

    /**
     * 地址
     */

    ADDRESS("地址"),

    /**
     * 电子邮件
     */

    EMAIL("电子邮件"),

    /**
     * 银行卡
     */

    BANK_CARD("银行卡"),

    /**
     * 密码
     */

    PASSWORD("密码");

    String title;

    SensitiveTypeEnum(String title) {
        this.title = title;
    }

    public static SensitiveTypeEnum parse(String name) {
        Optional<String> optional = Arrays.stream(values()).map(SensitiveTypeEnum::name).filter(fun -> fun.equals(name)).findAny();
        return optional.isPresent() ? valueOf(name) : null;
    }

    /**
     * 枚举项 “键”
     *
     * @return key 键
     */
    @Override
    public String key() {
        return name();
    }

    /**
     * 枚举项 “值”
     *
     * @return value 值
     */
    @Override
    public String value() {
        return title;
    }

    /**
     * 枚举options
     *
     * @return 枚举项组成的map
     */
    @Override
    public Map<String, String> enums() {
        return Arrays.stream(values()).collect(Collectors.toMap(IEnumOption::key, IEnumOption::value));
    }

}
